package Datas_Structure.Sort;

/**
 * 用递归实现汉诺塔问题
 */
public class HaroiTest {
    public static void main(String[] args) {
        haroiTest(4,'A','B','C');
    }
    /**
     * @param num  盘子数量
     * @param from 开始位置
     * @param in   中间位置
     * @param to   目标位置
     */
    public static void haroiTest(int num, char from, char in, char to) {
        if (num == 1) {
            System.out.println("第" + num + "个盘子从" + from + "移到" + to);
            //无论有多少个盘子都认为有两个，即最下面和上面所有的
        } else {
            //移动上面所有的盘子到中间位置
            haroiTest(num - 1, from, to, in);
            //移动下边的盘子
            System.out.println("第" + num + "个盘子从" + from + "移到" + to);
           //把上面的所有盘子从中间位置移到目标位置
            haroiTest(num-1,in,from,to);
        }
    }
}
